public class Solution {
    //对称二叉树
    public boolean isSymmetric(TreeNode root) {
        return check(root.left, root.right);
    }
    public static boolean check(TreeNode left, TreeNode right) {
        //左右都为空
        if (right == null && left == null) {
            return true;
        }
        //一边为空，一边不为空
        if ((left == null && right != null) || (right == null && left != null)) {
            return false;
        }
        //都不为空
        //判断两个节点是否相等
        if (!(left.val == right.val)) {
            return false;
        }
        //递归判断第一个节点的左子树和第二个节点的右子树是否对称
        boolean flg = check(left.left, right.right);
        if (!flg) {
            return flg;
        }
        //在判断第一个节点的右子树和第二个节点左子树是否对称
        flg = check(left.right, right.left);
        return flg;
    }
    //
}
